डेटाबेस अनुक्रमण सबसे आम तरीका है जिसे बैकएंड डेवलपर्स द्वारा डेटाबेस प्रश्नों को अनुकूलित करने के लिए जाना और उपयोग किया जाता है। इस लेख में, हम डेटाबेस अनुक्रमण के बारे में विस्तार से चर्चा करेंगे। डेटाबेस इंडेक्स क्या है? एक डेटाबेस इंडेक्स एक क्वेरी को एक कुशल तरीके से डेटाबेस से डेटा पुनर्प्राप्त करने की अनुमति देता है। सरल शब्दों में, अनुक्रमण एक अनियंत्रित तालिका को एक क्रम में लाने का एक तरीका है जो रिकॉर्ड की खोज करते समय दक्षता को अधिकतम करेगा। अनुक्रमणिका विशिष्ट तालिकाओं से संबंधित हो सकती हैं और इनमें एक या अधिक कुंजियाँ होती हैं। साथ ही, एक तालिका में इससे निर्मित कई अनुक्रमणिकाएँ हो सकती हैं। जब एक डेटाबेस तालिका को अनुक्रमित नहीं किया जाता है, तो पंक्तियों का कोई स्पष्ट क्रम नहीं होगा, इस प्रकार, किसी भी प्रश्न को पूरा करने के लिए, इसे पंक्तियों के माध्यम से रैखिक रूप से खोजना होगा, अर्थात क्वेरी को खोजने के लिए प्रत्येक पंक्ति के माध्यम से खोजना होगा मिलान शर्त के साथ पंक्तियाँ। जैसा कि आप कल्पना कर सकते हैं, यह आदर्श नहीं है और बड़ी मात्रा में डेटा के साथ डेटाबेस तालिका के अंदर देखते समय यह एक समस्या हो सकती है। उदाहरण के लिए, हमारे पास एक तालिका है जैसा कि नीचे दिखाया गया है: कंपनी आईडी इकाई इकाई लागत 10 12 1.15 12 12 1.05 14 18 1.31 18 18 1.34 1 1 24 1.15 16 12 1.31 10 12 1.15 12 24 1.3 18 6 1.34 18 12 1.35 14 12 1.95 21 18 1.36 12 12 1.05 20 6 1.31 18 18 1.34 1 1 24 1.15 14 24 1.05 और फिर, हम निम्नलिखित के रूप में एक क्वेरी चलाना चाहते हैं: SELECT company_id, units, unit_cost FROM index_test WHERE company_id = 18 इस विशेष मामले में, डेटाबेस को 18 के रूप में के सभी संभावित उदाहरणों को देखने के लिए, ऊपर से नीचे तक, तालिका में दिखाई देने वाले क्रम में सभी 17 अभिलेखों के माध्यम से खोजना होगा। company_id तालिका का आकार बढ़ने पर इसमें केवल अधिक से अधिक समय लगेगा। अनुक्रमण यहाँ कैसे मदद कर सकता है? अनुक्रमण हमें क्वेरी प्रदर्शन को अनुकूलित करने के लिए क्रमबद्ध तरीके से (इस मामले में ) पर खोज स्थिति के साथ कॉलम सेट करने में मदद कर सकता है। company_id कॉलम पर एक इंडेक्स के साथ, टेबल इस तरह दिखेगी: company_id कंपनी आईडी इकाई इकाई लागत 10 12 1.15 10 12 1.15 1 1 24 1.15 1 1 24 1.15 12 12 1.05 12 24 1.3 12 12 1.05 14 18 1.31 14 12 1.95 14 24 1.05 16 12 1.31 18 18 1.34 18 6 1.34 18 12 1.35 18 18 1.34 20 6 1.31 21 18 1.36 अब, डेटाबेस केवल 18 के बराबर की खोज कर सकता है और उस पंक्ति के लिए सभी अनुरोधित कॉलम लौटा सकता है, और फिर अगली पंक्ति में जा सकता है। यदि अगली पंक्ति में भी के रूप में 18 फिर से है, तो यह इस पंक्ति के लिए अनुरोध कॉलम भी लौटाएगा, लेकिन अगर अगली पंक्ति में 18 है, तो डेटाबेस जानता है कि यह यहां खोज को रोक सकता है, और प्रतिक्रिया समाप्त कर सकता है . company_id company_id company_id डेटाबेस इंडेक्स क्या हैं और वे क्या कर सकते हैं, इसकी एक सरल व्याख्या थी, लेकिन इस प्रक्रिया में और भी बहुत कुछ चल रहा है। आइए गहराई से देखें कि अनुक्रमण कैसे काम करता है। डेटाबेस अनुक्रमण कैसे काम करता है? वास्तव में, डेटाबेस प्रदर्शन को अनुकूलित करने के लिए हर बार क्वेरी की स्थिति में परिवर्तन होने पर डेटाबेस तालिका स्वयं को पुन: व्यवस्थित नहीं करती है, लेकिन वास्तव में ऐसा होता है कि सूचकांक डेटाबेस को एक अलग डेटा संरचना बनाता है जिसे आसानी से क्रमबद्ध किया जाना चाहिए। यह ध्यान रखना महत्वपूर्ण है कि जब किसी डेटाबेस में किसी कॉलम पर एक इंडेक्स बनाया जाता है, तो यह उस विशिष्ट कॉलम पर डेटा संरचना बनाता है और इस डेटा संरचना में कोई अन्य कॉलम संग्रहीत नहीं होता है। उदाहरण के लिए, उपरोक्त उदाहरण में, हमारी डेटा संरचना में केवल होगा और कोई अन्य कॉलम जैसे कि या । company_id unit unit_cost लेकिन यहां एक कानूनी सवाल सामने आता है - डेटाबेस को कैसे पता चलता है कि किसी क्वेरी के लिए तालिका में अन्य फ़ील्ड को वापस किया जाना है। आइए समझने की कोशिश करते हैं कि कैसे। डेटाबेस इंडेक्स मेमोरी में अतिरिक्त जानकारी के स्थान के लिए केवल संदर्भ जानकारी के लिए पॉइंटर्स स्टोर करते हैं। दूसरे शब्दों में, अनुक्रमणिका और उस विशेष पंक्ति के पते को स्मृति में रखती है। इस उदाहरण में, डेटाबेस इंडेक्स कुछ इस तरह दिखेगा: company_id कंपनी आईडी सूचक 10 _123 10 _129 1 1 _127 1 1 _138 12 _124 12 _130 12 _135 14 _125 14 _131 14 _133 16 _128 18 _126 18 _131 18 _132 18 _137 20 _136 21 _134 इस इंडेक्स के साथ, क्वेरी कॉलम में पंक्तियों की जांच कर सकती है, जिसमें मान के रूप में 18 है और फिर पॉइंटर का उपयोग करके, यह उस रिकॉर्ड के लिए संबंधित जानकारी ढूंढ सकता है। company_id अनुक्रमण के लिए किन डेटा संरचनाओं का उपयोग किया जाता है? यह समझने के बाद कि हम सूचकांक से क्या अपेक्षा करते हैं, आइए उन सामान्य डेटा संरचनाओं पर एक नज़र डालते हैं जिनका उपयोग डेटाबेस अनुक्रमण के लिए किया जा सकता है: बी पेड़ सबसे अधिक उपयोग की जाने वाली इंडेक्स डेटा संरचनाएं हैं क्योंकि वे लुकअप, विलोपन और सम्मिलन के लिए तेज़ हैं। ये सभी ऑपरेशन लॉगरिदमिक समय में संभव हैं और बी-ट्री के भीतर मौजूद डेटा को आसानी से सॉर्ट किया जा सकता है। बी-पेड़ हैश टेबल्स हैश इंडेक्स आमतौर पर का उपयोग करने वाले इंडेक्स का वर्णन करने के लिए उपयोग किया जाता है। क्योंकि हैश टेबल डेटा को देखने में विशेष रूप से कुशल हैं, सटीक मिलान की तलाश करने वाली क्वेरी को तेजी से संसाधित किया जा सकता है। हैश इंडेक्स में कुंजी कॉलम मान है, और हैश तालिका में मान तालिका के पंक्ति डेटा का संदर्भ है। हैश टेबल दूसरी ओर, हैश टेबल डेटा संरचनाओं का आदेश नहीं दिया जाता है; इसलिए, वे अन्य प्रकार की खोजों के लिए अक्षम हो सकते हैं। आर-वृक्ष अक्सर स्थानिक डेटाबेस में उपयोग किया जाता है, आमतौर पर बहु-आयामी जानकारी जैसे भौगोलिक निर्देशांक, आयत, बहुभुज, आदि को अनुक्रमित करने के लिए उपयोग किया जाता है। यह खोजों के लिए उपयोगी है जैसे "मेरे स्थान के 2 मील के भीतर सभी कॉफी की दुकानों को ढूंढें।" आर-ट्री बिटमैप इंडेक्स उन स्तंभों के लिए उपयोगी होते हैं जिनमें ऐसे मूल्यों की अधिक संख्या होती है, अर्थात कम चयनात्मकता वाले स्तंभ। उदाहरण के लिए, बूलियन मान वाले कॉलम पर विचार करें। बिटमैप इंडेक्स इंडेक्स का उपयोग कब करें इंडेक्स को डेटाबेस के प्रदर्शन को बढ़ाने के लिए डिज़ाइन किया गया है; इस प्रकार, जब भी हमें डेटाबेस के प्रदर्शन में उल्लेखनीय सुधार करने की आवश्यकता होती है, अनुक्रमण का उपयोग किया जा सकता है। आपका डेटाबेस जितना बड़ा होगा, इंडेक्सिंग से आपको फायदा होने की संभावना उतनी ही अधिक होगी। हालांकि, याद रखने वाली पहली और महत्वपूर्ण बात यह है कि सूचकांक अतिरिक्त स्थान लेता है; इसलिए, तालिका जितनी बड़ी होगी, सूचकांक उतना ही बड़ा होगा। हर बार जब आप कोई ऐड, रिमूव या अपडेट ऑपरेशन करते हैं, तो उसी ऑपरेशन को इंडेक्स पर भी निष्पादित करने की आवश्यकता होगी। इंडेक्स का उपयोग कब नहीं करना चाहिए जब डेटा डेटाबेस में लिखा जाता है, तो मूल तालिका को पहले अद्यतन किया जाता है, उसके बाद उस तालिका के आधार पर अन्य अनुक्रमणिकाएँ। जब डेटाबेस में एक लेखन किया जाता है, तो अनुक्रमणिका अद्यतन होने तक निष्क्रिय हो जाती हैं। यदि डेटाबेस लगातार लिख रहा है तो अनुक्रमणिका कभी भी कार्यात्मक नहीं होगी। यही कारण है कि इंडेक्स अक्सर डेटा वेयरहाउस में डेटाबेस पर लागू होते हैं जो उत्पादन डेटाबेस के बजाय योजनाबद्ध आधार पर (ऑफ-पीक घंटों के दौरान) नया डेटा प्राप्त करते हैं जो हर समय नए लेखन प्राप्त कर सकते हैं। इंडेक्स कैसे बनाते हैं? निम्न कोड स्निपेट दिखाता है कि SQL डेटाबेस में एकल कॉलम पर एक इंडेक्स कैसे बनाया जाता है: CREATE INDEX name_index ON Employee (Employee_Name); यदि आप एकाधिक स्तंभों पर एक अनुक्रमणिका बनाना चाहते हैं, तो SQL कमांड कुछ इस तरह दिखाई देगी: CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age); सामान्य तौर पर, एक इंडेक्स को टेबल पर तभी बनाया जाना चाहिए जब इंडेक्स किए गए कॉलम में डेटा अक्सर एक्सेस किया जाएगा। निष्कर्ष इसलिए, हमने इस लेख में डेटाबेस इंडेक्सिंग पर विस्तार से चर्चा की और डेटाबेस इंडेक्सिंग को लागू करने के लिए उपयोग की जाने वाली डेटा संरचनाओं के बारे में भी सीखा और यह भी कि जब इंडेक्स का उपयोग करना उचित हो और अन्यथा। सब कुछ समेटने के लिए, यहाँ एक त्वरित सारांश दिया गया है: डेटाबेस इंडेक्सिंग प्रश्नों के समय को काफी हद तक कम करने में मदद कर सकता है। अनुक्रमण में खोज मानदंड के साथ-साथ एक सूचक के लिए स्तंभों के साथ एक डेटा संरचना शामिल है। पॉइंटर शेष जानकारी वाली पंक्ति की मेमोरी डिस्क पर पता है। क्वेरी प्रदर्शन को बेहतर बनाने के लिए, इंडेक्स डेटा संरचना (बी-ट्री, आर-ट्री, हैश टेबल, या बिटमैप) को सॉर्ट किया जाता है। क्वेरी निर्दिष्ट पंक्ति के लिए अनुक्रमणिका खोजती है; सूचकांक उस सूचक को संदर्भित करता है जो शेष जानकारी की खोज करेगा। यह सब इस लेख के लिए है। डेटाबेस इंडेक्सिंग एक विशाल और थोड़ा जटिल विषय है, मुझे उम्मीद है कि यह लेख अवधारणा की मूल बातें समझने में मददगार होगा। पढ़ते रहिये!